package com.yincheng.oes.business.exam.judgepaper.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.yincheng.oes.business.exam.export.model.ExportPaperParam;
import com.yincheng.oes.business.exam.judgepaper.entity.ErrorOutlineExport;
import com.yincheng.oes.business.exam.judgepaper.entity.PaperResultDetail;
import com.yincheng.oes.business.exam.judgepaper.entity.PaperResultQues;
import com.yincheng.oes.business.exam.judgepaper.entity.QuesErrorStatics;

/**
 *
 * @author yangsy
 * @version 1.0.0
 * @since
 * 创建时间：2018年7月18日
 * 功能描述：考试成绩的题目信息mapper层
 * 邮箱地址：446948434@qq.com
 */
@Repository
public interface PaperResultDetailMapper {

    /**
     * 根据id删除题目信息
     *
     * @param id
     * @return
     */
    int deleteById(Integer id);

    /**
     * 新增学生回答题目信息
     *
     * @param record
     * @return
     */
    int insert(PaperResultDetail record);

    /**
     * 根据ID查询学生回答题目信息
     *
     * @param id
     * @return
     */
    PaperResultDetail selectById(Integer id);

    /**
     * 更新学生回答题目信息
     *
     * @param record
     * @return
     */
    int update(PaperResultDetail record);

    /**
     * 根据考试id获取回答题目列表信息
     *
     * @param resultId
     * @return
     */
    List<PaperResultQues> selectDetailsByResultId(String resultId);

    /**
     * 根据试卷id获取回答题目列表信息
     *
     * @param paperId
     * @return
     */
    List<PaperResultQues> selectDetailsByPaperId(String paperId);

    /**
     * 根据试卷id获取答卷题目列表信息
     *
     * @param param 导出试卷param
     * @return 答卷题目信息列表
     */
    List<PaperResultQues> selectResultDetailsByParam(ExportPaperParam param);

    /**
     * 根据试卷id和用户id获取答卷题目列表信息
     *
     * @param paperId
     * @param userId
     * @return
     */
    List<PaperResultQues> selectDetailsByPaperIdAndUserId(@Param("paperId") String paperId,
            @Param("userId") String userId);

    Integer countByResultId(String resultId);

    /**
     * 根据考试id删除题目明细
     *
     * @param resultId
     * @return
     */
    int deleteByResultId(String resultId);

    /**
     * 根据考卷id统计题目错误信息
     *
     * @param resultId
     * @return
     */
    List<QuesErrorStatics> staticsErrorQuesByResultId(String resultId);

    /**
     * 根据考卷id统计错误题目大纲信息
     *
     * @param resultId
     * @return
     */
    List<ErrorOutlineExport> staticsErrorOutlineByResultId(String resultId);

    /**
     * 根据param查询答卷所有的错题关联的知识点
     *
     * @param param param
     * @return 错题关联知识点集合
     */
    List<ErrorOutlineExport> staticsErrorOutlineByParam(ExportPaperParam param);
}
